function [est_index, est_value] = inverse_hash_map(d, K, N, B, sigma_inv, J, z_hat, G_hat)
%%
% 函数名：[est_index, est_value] = inverse_hash_map(d, K, N, B, sigma_inv, J, z_hat, G_hat)
% 功  能：对之前估计到的坐标集合 J 进行哈希反映射，并估计幅值
% 参  数：
%       d：提取系数比例
%       K：稀疏度
%       N：采样信号的总点数
%       B：分筐数
%       sigma_inv：simga 关于模 N 的逆
%       J：有用信号所在“筐”的序号
%       z_hat：经过降采样后的序列
%       G_hat：平坦窗幅值补偿
% 返回值：
%       est_index：估计得到的频点坐标
%       est_value：估计得到的频点坐标对应的幅值
%
% 注：无
%%

    est_index = zeros(d*K*N/B, 1);
    est_value = zeros(d*K*N/B, 1);

    m = 1; % 将所有估计值弄到一个向量中
    for i = 1:length(J)
        
        % 计算坐标值从 B 逆映射回 N 时，可能的误差上下限
        low = mod(ceil((J(i) - 1 - 0.5) * N / B), N);
        high = mod(ceil((J(i) - 1 + 0.5) * N / B), N);

        % 对每个坐标值 J，都进行反映射
        j = low;

        L = 1;
        while j ~= high
            % 对坐标（index）进行反变换
            est_index(m) = mod(j * sigma_inv, N) + 1;

            % 对坐标值进行估计
            est_value(m) = z_hat(J(i)) ./ G_hat(L);

            m = m + 1;
            L = L + 1;
            j = mod(j + 1, N);
        end
    end

end